#ifndef __GAME_CONTROLLER_HPP__
#define __GAME_CONTROLLER_HPP__

#include "game_controller\headers\game_controller_global.hpp"

#include "game_controller\ih\game_controller_iscene.hpp"

namespace GameController {

class GAME_CONTROLLER_EXPORT GameControllerPlugin
{
public:

	virtual ~GameControllerPlugin() {}

public:

	virtual void handleNextTimeStep() = 0;

	virtual void handleUserActivity() = 0;

	virtual std::shared_ptr< IScene > getScene(
			std::shared_ptr< GameModel::IDistanceUnit > _from
		,	std::shared_ptr< GameModel::IDistanceUnit > _to ) = 0;

public:

	virtual bool isEverythingCool() const = 0;
};

} // namespace GameController

#endif // __GAME_CONTROLLER_HPP__
